package org.example.controller;

import org.example.domain.User;
import org.example.domain.response.ResponseResult;

import javax.servlet.http.HttpServletRequest;

public interface LoginController {

    /**
     * 登出
     * @param request
     * @return
     */
    ResponseResult logout(HttpServletRequest request);

    /**
     * 通过用户名登录
     * @param user 用户信息（用户名，密码，验证码）
     * @param uuid 验证验证码的唯一标识（作为键存在redis中）
     * @return
     */
    ResponseResult loginByUserName(User user,String uuid);

    /**
     * 注册用户
     * @param user 用户信息（用户名，密码，邮箱，验证码）
     * @param uuid 验证验证码的唯一标识（作为键存在redis中）
     * @return
     */
    ResponseResult register(User user,String uuid);

    /**
     * 获取验证码（有效时间3分钟）
     * @return base64格式的验证码图片字节流，uuid
     */
    ResponseResult getCheckCode(HttpServletRequest request);

    /**
     * 通过邮箱获取验证码（有效时间3分钟）
     * @param mail 邮箱地址
     * @return
     */
    ResponseResult getCheckCodeByMail(String mail);

    /**
     * 通过邮箱登录
     * @param user 用户信息（邮箱，验证码）
     * @param uuid 验证验证码的唯一标识（作为键存在redis中）
     * @return
     */
    ResponseResult loginByMail(User user,String uuid);
}
